#include <iostream>
#include <string.h>
using namespace std;
//函数调用运算符()也可以重载
//由于重载后使用的方式非常像函数的调用,因此称为仿函数
//仿函数没有固定的写法,非常灵活
class Myprint{
public:
    void operator()(string text){
       cout << text << endl;
    }
};


class MyAdd{
public:
  int operator()(int num1,int num2){
    return num1 + num2;
  }
};

void test01(){
    //重载的()操作符 也称为仿函数
    Myprint myFunc;
    myFunc("hello world");
}

void test02(){
    MyAdd myadd;
    int ret = myadd(100,100);
    cout << "ret =" << ret << endl;

    //匿名函数对象
    cout << MyAdd()(100,100) << endl;
}

int main(){
    test01();
    test02();
    system("pause");
    return 0;
}